home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / program / 356 / defs / systemx.def < prev    next >
Text File  |  1992-03-11  |  11KB  |  267 lines

  1. DEFINITION MODULE SYSTEMX;       (* H. SEILER 31.03.82 *)
  2.                                  (* UPDATED   05.01.83 *)
  3.  
  4. (*      File name:  SYSTEMX.def                                 *)
  5. (*      Creation :  Orginal ETH FILE                            *)
  6. (*      Function :  Interface to SYSTEMX                        *)
  7. (*      By       :  ETH                                         *)
  8. (*                                                              *)
  9.  
  10. (*
  11. *    Copyright (c) 1985,1986,1987,1988,1989 by
  12. *    ana-systems, Foster City, California.
  13. *    All Rights Reserved.
  14. *
  15. *    This software is furnished under a license and may be used and copied
  16. *    only  in accordance with  the  terms  of  such  license and  with the
  17. *    inclusion of the above copyright notice.  This software or  any other
  18. *    copies thereof may not be provided or otherwise made available to any
  19. *    other  person.   No title to and ownership of the  software is  herby
  20. *    transferred.
  21. *
  22. *    The information in this software is  subject to change without notice
  23. *    and  should  not be construed as a commitment by ana-systems.   No
  24. *    warranty is implied or expressed.
  25. *
  26. *   SCCID  = "%R%.%L%    %G%"; 
  27. *)
  28. (*      History of modifcation                                  *)
  29. (*      Date            Who             Why                     *)
  30. (*      6/23/85         Morris          ErrorNumber is added    *)
  31. (*      01/09/96        K.Y.            CR = CHR(10)            *)
  32. (*      08/04/86        Elias           Changes for the lovely ATARI     *)
  33. (*      10-11/88        Wayne           More changes for Atari  *)
  34. (*                                                              *)
  35.  
  36. (*  DEFINITION MODULE 'SYSTEMX' FOR MC68000/MC68020 RUNTIME      *)
  37. (*  SYSTEM OF SMILER-2 CROSS COMPILER/CROSS LINKER SYSTEM.       *)
  38. (*                                                               *)
  39. (*                     VERSION 3.0                               *)
  40. (*                                                               *)
  41. (*                                                               *)
  42. (*  THIS MODULE IS A COLLECTION OF ROUTINES TO SUPPORT CODE      *)
  43. (*  GENERATED BY THE SMILER-2 CROSS COMPILER FOR THE MOTOROLA    *)
  44. (*  MC68000/MC68020 PROCESSORS.                                  *)
  45. (*                                                               *)
  46. (*  SOME OF THESE ROUTINES SUCH AS NEWPROCESS ARE CALLED         *)
  47. (*  EXPLICITELY BY AN USER PROGRAM, WHEREAS OTHER ROUTINES       *)
  48. (*  (E.G. THE CASE-STATEMENT-PROCESSOR) ARE CALLED IMPLICITELY   *)
  49. (*  BY THE CROSS COMPILER.                                       *)
  50. (*                                                               *)
  51. (*  THE SEQUENCE (ORDER) OF THE DEFINITIONS OF THE PROCEDURE     *)
  52. (*  HEADERS IN THIS DEFINITION MODULE IS ESSENTIAL AND MUST      *)
  53. (*  NOT BE CHANGED. THE COMPILER USES THE ORDINAL NUMBER OF      *)
  54. (*  A SPECIFIC PROCEDURE WITHIN THIS MODULE AS A REFERENCE       *)
  55. (*  TO THE MODULE 'SYSTEMX'.                                     *)
  56. (*                                                               *)
  57. (*  NOTE THAT MOST OF THE PROCEDURES HAVE A NON-STANDARD         *)
  58. (*  PARAMETER-TRANSMISSION TO BE MORE EFFICIENT.                 *)
  59. (*                                                               *)
  60. (*  THIS MODULE HAS BEEN WRITTEN IN MODULA-2 TO FACILITATE       *)
  61. (*  THE INSTALLATION AND USE OF SMILER-2 AT AN OTHER SITE        *)
  62. (*  WITHOUT THE NEED OF AN (CROSS) ASSEMBLER.                    *)
  63. (*                                                               *)
  64. (*  USE THE FOLLOWING INSTALLATION PROCEDURE :                   *)
  65. (*                                                               *)
  66. (*  COMPILE THE DEFINITION MODULE FIRST, SAVE THE SYM-FILE.      *)
  67. (*  THEN COMPILE THE IMPLEMENTATION MODULE USING THE SYMBOL      *)
  68. (*  FILE GENERATED AND SAVE THE LNK-FILE.                        *)
  69. (*  THE RESULTING LNK-FILE IS THEN THE (SEPARATELY COMPILED)     *)
  70. (*  MODULE 'SYSTEMX'. THIS LNK-FILE MUST ALWAYS BE SUPPLIED      *)
  71. (*  TO THE CROSS LINKER FOR A LINKER RUN.                        *)
  72. (*                                                               *)
  73. (*  NOTE : THE NAME OF THIS MODULE HAS EXACTLY TO BE 'SYSTEMX'   *)
  74. (*  ----   (CAPITAL LETTERS ONLY), BECAUSE THE CROSS LINKER      *)
  75. (*  LOOKS FOR A MODULE WITH THIS NAME WHEN THE TARGET PROCESSOR  *)
  76. (*  IS MC68000 OR MC68020.                                       *)
  77. (*                                                               *)
  78.  
  79.   FROM SYSTEM IMPORT ADDRESS, PROCESS;
  80.  
  81.   FROM GEMDOS IMPORT
  82.                  ciPermissionNum,
  83.                  ciORDONLY, ciOWRONLY, ciORDWR, ciONDELAY, ciOAPPEND,
  84.                  ciOCREAT,  ciOTRUNC,  ciEXCLU, ciOCONTIG,
  85.                  ciSTDIN ,  ciSTDOUT , ciSTDERR ;
  86.  
  87.   EXPORT QUALIFIED
  88.  
  89.      COPYRIGHT,
  90.      CASEX, HALTX, STACKTEST,
  91.      NEWPROCESS, TRANSFER, IOTRANSFER, SYSCALL,
  92.      MULU32, DIVU32, MULS32, DIVS32,MERROR,Merrno,ARGC,ARGV,
  93.      ieeeadd, ieeesub, ieeemul, ieeediv, ieeecmp, ieeetst, 
  94.      ieeefloat, ieeetrunc, 
  95.      skydiv,skycmp,skytst,skyfloat,skytrunc,
  96.      ARGSTRING,Mexit,Mwrite,Mread,Mopen,Mclose,
  97.      Misatty,
  98.      Mfork,Mexeclp,Mwait, PZero,MZero,PInfinity,MInfinity,NaNu,
  99.      Mcreat,Munlink,Mmalloc,Mfree,Mlseek,Mrename,Mmkdir,Mrmdir,single,
  100.      ieeeunpack, MODES,Rmode,Imode,RoundModes,Execptions ,ExeMode,EofLineChar,
  101.      LfChar,ORDONLY, OWRONLY, ORDWR, ONDELAY, OAPPEND, OCREAT, OTRUNC, 
  102.      EXCLU, OCONTIG , STDIN  , STDOUT , STDERR, PermissionNum ;
  103.  
  104.  
  105.  
  106. CONST
  107.  
  108.   (* Error Message for Supportting Routines               *)
  109.   COPYRIGHT = '(C) Copyright 1985-86 Djavaheri Bros. Modula-2/68';
  110.  
  111.    ORDONLY = ciORDONLY;
  112.    OWRONLY = ciOWRONLY;
  113.    ORDWR   = ciORDWR;
  114.    ONDELAY = ciONDELAY;
  115.    OAPPEND = ciOAPPEND;
  116.    OCREAT  = ciOCREAT;
  117.    OTRUNC  = ciOTRUNC;
  118.    EXCLU   = ciEXCLU;
  119.    OCONTIG = ciOCONTIG ;
  120.    PermissionNum = ciPermissionNum;
  121.   
  122.   STDIN  = ciSTDIN  ;                   (* For Unix Standard Input *)
  123.   STDOUT = ciSTDOUT ;                   (* For Unix Standard Output *)
  124.   STDERR = ciSTDERR ;                   (* For Unix Standard error *)
  125.  
  126.    EofLineChar = 15C;   (* CR *)
  127.    LfChar      = 12C;   (* LF *)
  128.  
  129.   PZero     = 0 ;
  130.   MZero     = 80000000H; 
  131.   PInfinity = 7F800000H;
  132.   MInfinity = 0FF800000H;
  133.   NaNu      = 7FFFFFFFH;
  134.   OverflowFraction = 00FFFFFFH;
  135.   
  136.  
  137. TYPE
  138. (*
  139.     Range Values for unpacked fields of Single operation                *)
  140.  
  141.    experange = [-128..127];
  142.    singrange = [-1..0];
  143.  
  144. (* Rounding Modes nesseary for IEEE. The default is set by SYSTEMX to 
  145.    Round to Nearset.
  146.   
  147.         IF A op B --> Z and  A<= Z <= B then                            *)
  148.  
  149.    RoundModes = ( Rplus, Rminus,Rzero,Rnear);
  150.  
  151. (* Infinity types: Either plus or Minus or None                         *)
  152.    
  153.  
  154.    InfinityModes = (Affine,Projective);
  155.    
  156.  
  157. (* 
  158.    Execption which can be rasised by any of the operation. This Exection 
  159.    are default seting in SYSTEMX.                                       *) 
  160.  
  161.    Execptions = ( InExResult,UnderFlow,OverFlow,DividByZero,InVaildOp);
  162.  
  163. (* Execption states:
  164.    Such as Traping mode is disable or inable. Current mode of the operation
  165.    and procedure to call. 
  166.  
  167.  *)
  168.    ExeMode = RECORD
  169.         trap : BOOLEAN;
  170.         mode : BOOLEAN;
  171.         errno : INTEGER;
  172.         ProcName : PROCEDURE  ;
  173.      END;
  174.  
  175. (* Single format extenated to unpacked format.
  176.                                                                         *) 
  177.    single = RECORD
  178.        sign : singrange;
  179.        exponent : experange ;
  180.        fraction: BITSET;
  181.    END (* single *);
  182.    
  183.  (* Error Code  from O/s to Modula-2/68                                 *)
  184.  
  185.    MERROR = ( OK,EndOfFile,IOError,NoFile,NoInodes,NoLus,BadOpenModes,NotOwner,
  186.               NotOpenFile,BadFileName, NoSpace,NotaDirectory,MissingDirectory,
  187.               FileIsDirectory,WritingToDirectory,NotaDevices,NoMoreSwap,
  188.               FileIsBusy,BadSystemCall,NoReadPremission,NoWritePremission,
  189.               NoSuchProcess, InteruptedCall,ArgListTooBig, ExecFormatErr,
  190.               NotEnoughCore,NoChildren,NoMoreProces, BadAddress,BlockDeviceOnly,
  191.               MountDeviceBusy,CrossDeviceLink,InvaildArgument,NotaTypeWriter,
  192.               FileTooLarge,IllegalSeek,TooManyLink,BrokenPipe,OpWillBlock,
  193.               BadLunNumber,NoAccess,FileSystemReadOnly,FileExits,Unkown);
  194.                    
  195.  
  196.   VAR 
  197.  
  198.    ARGC : CARDINAL;
  199.    ARGV : ADDRESS;      
  200.    Merrno : MERROR;
  201.    
  202.   (* UTILITIES SUPPORTING THE COMPILER *)
  203.  
  204.   PROCEDURE CASEX;
  205.   PROCEDURE HALTX;
  206.   PROCEDURE STACKTEST;
  207.  
  208.   (* PSEUDO-MODULE SYSTEM *)
  209.   PROCEDURE NEWPROCESS (PROCESSCODE : PROC;
  210.                         FWAWSP : ADDRESS; LENGTHWSP : ADDRESS;
  211.                         VAR PROCESSDESCRIPTOR : PROCESS;
  212.                         INITIALPRIO : ADDRESS);
  213.   PROCEDURE TRANSFER;
  214.   PROCEDURE IOTRANSFER;
  215.   PROCEDURE SYSCALL;
  216.  
  217.   (* 32-BIT (LONG-) INTEGER/CARDINAL ARITHMETIC *)
  218.   PROCEDURE MULU32     (MULTIPLICAN, MULTIPLIER : ADDRESS);
  219.   PROCEDURE DIVU32     (DIVIDEND, DIVISOR       : ADDRESS);
  220.   PROCEDURE MULS32     (MULTIPLICAN, MULTIPLIER : ADDRESS);
  221.   PROCEDURE DIVS32     (DIVIDEND, DIVISOR       : ADDRESS);
  222.  
  223.   (* 32-BIT IEEE FLOATING POINT FORMAT ARITHMETIC *)
  224.  
  225.   PROCEDURE ieeeadd       (op1,       op2     : BITSET):BITSET;
  226.   PROCEDURE ieeesub       (op1,     op2 : BITSET):BITSET;
  227.   PROCEDURE ieeemul       (op1, op2 : BITSET):BITSET;
  228.   PROCEDURE ieeediv       (op1,   op2    : BITSET):BITSET;
  229.   PROCEDURE ieeecmp       (op1, op2     : BITSET):INTEGER;
  230.   PROCEDURE ieeetst       (op1                  : BITSET);
  231.   PROCEDURE ieeefloat     (op1               : INTEGER):BITSET;
  232.   PROCEDURE ieeetrunc     (op1               : BITSET):INTEGER;
  233.   PROCEDURE skydiv        (op1,   op2    : BITSET):BITSET;
  234.   PROCEDURE skycmp        (op1,op2        :BITSET):INTEGER;
  235.   PROCEDURE skytst        (op1:                 BITSET):INTEGER;
  236.   PROCEDURE skyfloat      (op1:          ADDRESS):REAL;
  237.   PROCEDURE skytrunc      (op1:        REAL):ADDRESS;
  238.  
  239.  
  240.   PROCEDURE ARGSTRING(ac:CARDINAL):ADDRESS;
  241.   PROCEDURE Misatty(lun:CARDINAL):BOOLEAN;
  242.   PROCEDURE Mexit (x:INTEGER);
  243.   PROCEDURE Mwrite(count:INTEGER;buffer: ADDRESS;lu :INTEGER):INTEGER;
  244.   PROCEDURE Mread (count:INTEGER;buffer: ADDRESS;lu :INTEGER):INTEGER;
  245.   PROCEDURE Mlseek (offset:INTEGER;count: INTEGER;lu :INTEGER):INTEGER;
  246.   PROCEDURE Mclose(lun:CARDINAL):INTEGER;
  247.   PROCEDURE Mopen(Modes,Oflag:INTEGER;path:ADDRESS):INTEGER;
  248.   PROCEDURE Mcreat(Oflag:INTEGER;path:ADDRESS):INTEGER;
  249.   PROCEDURE Mmkdir(Oflag:INTEGER;path:ADDRESS):INTEGER;
  250.   PROCEDURE Munlink(path:ADDRESS):INTEGER;
  251.   PROCEDURE Mrmdir(path:ADDRESS):INTEGER;
  252.   PROCEDURE Mrename(newpath,oldpath:ADDRESS):INTEGER;
  253.   PROCEDURE Mmalloc(count:CARDINAL):ADDRESS;
  254.   PROCEDURE Mfree(buff:ADDRESS):INTEGER;
  255.   PROCEDURE Mfork():INTEGER;
  256.   PROCEDURE Mwait(VAR status :INTEGER):INTEGER;
  257.   PROCEDURE Mexeclp(arg6,arg5,arg4,arg3,arg2,arg1,arg0,
  258.                 progname: ADDRESS):INTEGER;
  259.   PROCEDURE ieeeunpack(VAR op1:BITSET;VAR result:single):INTEGER;
  260. VAR
  261.  
  262.   MODES : ARRAY [InExResult..InVaildOp] OF ExeMode;
  263.   Rmode : RoundModes;
  264.   Imode : InfinityModes;
  265.  
  266. END (* DEFINITION MODULE *) SYSTEMX.
  267.